home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 8
/
FM Towns Free Software Collection 8.iso
/
t_os
/
reno20
/
reno20.bas
next >
Wrap
BASIC Source File
|
1994-06-01
|
7KB
|
200 lines
100 ' RE-NUMBER プログラム V2.0
110 '
120 ' Produced By K.Fujita
130 '
140 ' 1994.2.12
150 '
160 DIM NA1$(255),NA2$(255),NAT(255)
170 CLS:DR$="":ON ERROR GOTO 190
180 INPUT"対象ドライブは? ",DR$:DR$=DR$+":":SHELL DR$:GOTO 200
190 RESUME 170
200 ON ERROR GOTO 0
210 CLS:FILES:PRINT
220 LINE(395,95)-(639,250),PSET,5,B
230 LINE(400,100)-(634,245),PSET,5,B
240 SYMBOL(405,110),"変更処理に入る",1,1,7
250 SYMBOL(405,130),"一つ前のディレクトリに戻る",1,1,7
260 SYMBOL(405,150),"ディレクトリの指定",1,1,7
270 SYMBOL(405,170),"ドライブ変更",1,1,7
280 GOTO 300
290 LINE(403,CAS%)-(630,CAS%+19),XOR,3,B:RETURN
300 CAS%=108:CO%=1:SYMBOL(405,220)," ↑↓キーで指定",1,1,6
310 GOSUB 290
320 A$=INKEY$:IF A$="" THEN 320 ELSE GOSUB 290
330 IF A$=CHR$(&H0D) THEN 370
340 IF A$=CHR$(&H1E) AND CO%>1 THEN CO%=CO%-1:CAS%=CAS%-20:GOTO 310
350 IF A$=CHR$(&H1F) AND CO%<4 THEN CO%=CO%+1:CAS%=CAS%+20:GOTO 310
360 GOTO 310
370 CLS 5:ON CO% GOTO 420,400,410,170
380 RESUME 220
390 RESUME 200
400 ON ERROR GOTO 380:SHELL "cd ..":GOTO 210
410 ON ERROR GOTO 390:INPUT"ディレクトリ名? ",DRNA$:SHELL "cd "+DRNA$:GOTO 210
420 '
430 CMP%=0:JI1$="":ON ERROR GOTO 450
440 NEXT:GOTO 440
450 RESUME 460
460 INPUT"変更前の拡張子? ",A$:GOSUB 2000:KAKU1$=A$
470 IF KAKU1$="" THEN 500
480 T=INSTR(KAKU1$,".")
490 KAKU1$=MID$(KAKU1$,T+1,3)
500 ON ERROR GOTO 0
510 INPUT"変更前の固定部分の文字列? ",A$:GOSUB 2000:MNA1$=A$:IF LEN(MNA1$)>7 THEN 510
520 ON ERROR GOTO 540
530 FILES MNA1$+"*."+KAKU1$:PRINT :GOTO 550
540 RESUME 430
550 INPUT"変更前の可変部分の文字列の長さ? ",L1%
560 L%=LEN(MNA1$):IF L%+L1%>8 THEN COLOR 3:PRINT "ファイル名が長すぎます!":COLOR 7:GOTO 510
570 '
580 INPUT"最大値は何番から? ",MAX
590 INPUT"最小値は何番まで? ",MIN
600 IF MIN>MAX THEN COLOR 3:PRINT "最大値と最小値の指定に誤りがあります!":COLOR 7:GOTO 580
610 INPUT"変更前の番号例? ",X1
620 INPUT"変更後の番号例? ",X2
630 X=X2-X1
640 '
650 INPUT"変更前の字詰めの文字? ",A$:GOSUB 2000:JIZU1$=A$:IF LEN(JIZU1$)>1 THEN 650
660 '
670 '
680 CLS:GOSUB 1650:IF NAT%=0 THEN 200
690 INPUT"上記のファイルを変更してよろしいですか?(YesならYキー)",A$
700 IF A$<>"" AND KINSTR("yYyYンンん",A$) THEN 710 ELSE 200
710 IF ERF%=0 THEN 740
720 INPUT"変更後のファイルナンバーを圧縮しますか?(YesならYキー)",A$
730 IF A$<>"" AND KINSTR("yYyYンンん",A$) THEN CMP%=1 ELSE CMP%=0
740 CLS:T=MAX:GOSUB 1230
750 COLOR 6:PRINT MNA1$;
760 COLOR 4:PRINT JI1$;
770 PRINT D1$;
780 COLOR 5:PRINT ".";KAKU1$;
790 COLOR 7:PRINT " ~ ";
800 T=MIN:GOSUB 1230
810 COLOR 6:PRINT MNA1$;
820 COLOR 4:PRINT JI1$;
830 PRINT D1$;
840 COLOR 5:PRINT ".";KAKU1$;:COLOR 7:PRINT " (";
850 IF X=0 THEN PRINT "数字は再設定されません。)":GOTO 880
860 IF X>0 THEN PRINT "+"; ELSE PRINT "-";
870 PRINT MID$(STR$(X),2);" づつ ずれます。)"
880 PRINT:COLOR 3
890 PRINT "***************** 変 更 前 の 設 定 ******************":COLOR 7
900 PRINT" 固定部分 : ";:COLOR 6:PRINT MNA1$;:COLOR 7:LOCATE 25
910 PRINT"可変部分の長さ : ";:COLOR 4:PRINT L1%:COLOR 7
920 PRINT"字詰めの文字 : ";:COLOR 4:PRINT JIZU1$;:COLOR 7:LOCATE 25
930 PRINT" 拡張子 : ";:COLOR 5:PRINT KAKU1$:COLOR 7
940 PRINT "******************************************************"
950 PRINT:JI2$=""
960 INPUT"変更後の固定部分の文字列? ",A$:GOSUB 2000:MNA2$=A$:IF LEN(MNA2$)>7 THEN 960
970 INPUT"変更後の可変部分の文字列の長さ? ",L2%
980 L%=LEN(MNA2$):IF L%+L2%>8 THEN COLOR 3:PRINT "ファイル名が長すぎます!":COLOR 7:GOTO 960
990 INPUT"変更後の字詰めの文字? ",A$:GOSUB 2000:JIZU2$=A$:IF LEN(JIZU2$)>1 THEN 990
1000 INPUT"変更後の拡張子? ",A$:GOSUB 2000:KAKU2$=A$
1010 IF KAKU2$="" THEN 1040
1020 T=INSTR(KAKU2$,".")
1030 KAKU2$=MID$(KAKU2$,T+1,3)
1040 PRINT:GOSUB 1360:IF ERF%=1 THEN PRINT "何か押して下さい":A$=INPUT$(1):GOTO 740
1050 PRINT
1060 INPUT"この設定でいいですか?(再設定の場合 Nキー)",A$
1070 IF A$<>"" AND KINSTR("nNnNミミみ",A$) THEN PRINT:GOTO 1740
1080 '
1090 IF X<=0 THEN 1160
1100 NAC%=0
1110 FOR T=NAT%-1 TO 0 STEP -1
1120 NA1$=NA1$(T):NA2$=NA2$(T):PRINT NA1$,NA2$:IF NA1$=NA2$ THEN 1140
1130 ON ERROR GOTO 1820:NAME NA1$ AS NA2$:NAC%=T
1140 NEXT
1150 ON ERROR GOTO 0:GOTO 1770
1160 NAC%=0
1170 FOR T=0 TO NAT%-1
1180 NA1$=NA1$(T):NA2$=NA2$(T):PRINT NA1$,NA2$:IF NA1$=NA2$ THEN 1200
1190 ON ERROR GOTO 1820:NAME NA1$ AS NA2$:NAC%=T
1200 NEXT
1210 ON ERROR GOTO 0:GOTO 1770
1220 '
1230 D1$=MID$(STR$(T),2)
1240 IF JIZU1$="" THEN 1260
1250 IF L1%>1 THEN JI1$=STRING$(L1%-LEN(D1$),JIZU1$)
1260 NA1$=MNA1$+JI1$+D1$+"."+KAKU1$
1270 GOTO 1550
1280 '
1290 D2$=MID$(STR$(T+X),2):IF JIZU2$="" THEN 1320
1300 IF L2%-LEN(D2$)<0 THEN COLOR 2:PRINT "可変部分が異常です!":COLOR 7:ERF%=1
1310 IF L2%>1 THEN JI2$=STRING$(L2%-LEN(D2$),JIZU2$)
1320 NA2$=MNA2$+JI2$+D2$
1330 IF LEN(NA2$)>8 OR T+X<0 THEN COLOR 2:PRINT "「";NA2$;"」 が異常です!":COLOR 7:ERF%=1
1340 NA2$=NA2$+"."+KAKU2$
1350 RETURN
1360 '
1370 ERF%=0:CT%=0:IF X<=0 THEN 1440
1380 T=NAT(NAT%-1)
1390 FOR TT=NAT%-1 TO 0 STEP -1
1400 IF CMP%=1 THEN GOSUB 1290:NA2$(TT)=NA2$:T=T-1 ELSE T=NAT(TT):GOSUB 1290:NA2$(TT)=NA2$
1410 IF TT>=NAT%-4 OR TT<=3 OR CMP%=1 THEN PRINT NA1$(TT),NA2$(TT) ELSE GOSUB 1510
1420 NEXT
1430 RETURN
1440 T=NAT(0)
1450 FOR TT=0 TO NAT%-1
1460 IF CMP%=1 THEN GOSUB 1290:NA2$(TT)=NA2$:T=T+1 ELSE T=NAT(TT):GOSUB 1290:NA2$(TT)=NA2$
1470 IF TT>=NAT%-4 OR TT<=3 OR CMP%=1 THEN PRINT NA1$(TT),NA2$(TT) ELSE GOSUB 1510
1480 NEXT
1490 RETURN
1500 '
1510 IF CT%=4 THEN RETURN
1520 CT%=CT%+1
1530 PRINT "・","・"
1540 RETURN
1550 '
1560 ON ERROR GOTO 1600
1570 OPEN "I",#1,DR$+NA1$
1580 CLOSE:ON ERROR GOTO 0
1590 RETURN
1600 IF ERR=63 THEN COLOR 6:PRINT "「";NA1$;"」が有りません!":GOTO 1620
1610 COLOR 2:PRINT "「";NA1$;"」 が異常です!"
1620 COLOR 7:ERF%=1
1630 RESUME 1640
1640 RETURN 1710
1650 '
1660 NAT%=0:FMIN%=0:FMAX%=0:ERF%=0
1670 FOR T=MIN TO MAX
1680 GOSUB 1230:PRINT NA1$:NA1$(NAT%)=NA1$:NAT(NAT%)=T:NAT%=NAT%+1
1690 IF FMIN%=0 THEN MIN=T:FMIN%=1
1700 FMAX%=T
1710 NEXT
1720 MAX=FMAX%
1730 RETURN
1740 ON ERROR GOTO 0
1750 INPUT"変更前のファイルから設定し直しますか? (YesならYキー)",A$
1760 IF A$<>"" AND KINSTR("yYyYンンん",A$) THEN 200 ELSE 680
1770 COLOR 6:INPUT"1:終了 2:別のファイル名 3:別のディレクトリ 4:別のドライブ ",CO%:COLOR 7
1780 ON CO% GOTO 1800,1790,200,170:GOTO 1770
1790 CLS:FILES:PRINT :GOTO 420
1800 END
1810 '
1820 ' name error
1830 COLOR 3
1840 PRINT
1850 PRINT "変更作業中にエラーが出ました!"
1860 IF NAC%=0 THEN 1960
1870 COLOR 6
1880 INPUT"1:変更したファイル名を戻す 2:そのままの状態で再度設定する ",A$:COLOR 7
1890 IF A$="1" THEN 1920
1900 IF A$="2" THEN 1980
1910 GOTO 1870
1920 IF X<=0 THEN 1940
1930 FOR T=NAC% TO NAT%-1:GOSUB 1950:NEXT:GOTO 1960
1940 FOR T=NAC% TO 0 STEP -1:GOSUB 1950:NEXT:GOTO 1960
1950 PRINT NA2$(T),NA1$(T):NAME DR$+NA2$(T) AS DR$+NA1$(T):RETURN
1960 COLOR 6:PRINT "何かキーを押して下さい":COLOR 7
1970 A$=INKEY$:IF A$="" THEN 1970
1980 IF ERL=1130 THEN T=0:RESUME 1140 ELSE T=NAT%-1:RESUME 1200
1990 '
2000 '小文字→大文字
2010 IF A$="" THEN RETURN
2020 L=LEN(A$):DD$=""
2030 FOR T=1 TO L
2040 D$=MID$(A$,T,1)
2050 IF D$>="a" AND D$<="z" THEN D$=CHR$(ASC(D$)-&H20)
2060 DD$=DD$+D$
2070 NEXT
2080 A$=DD$:RETURN